home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 January / PCWorld_2007-01_cd.bin / v cisle / autoit / autoit-v3.2.0.1-setup.exe / Include / GuiListView.au3 < prev    next >
Text File  |  2006-08-02  |  68KB  |  1,491 lines

  1. ; Include Version:1.66a (28 July 2006)
  2. #include-once
  3. #include <ListViewConstants.au3>
  4. #include <Array.au3>
  5. ; ------------------------------------------------------------------------------
  6. ;
  7. ; AutoIt Version: 3.1.1++
  8. ; Language:       English
  9. ; Description:    Functions that assist with ListView.
  10. ;
  11. ; ------------------------------------------------------------------------------
  12.  
  13. ; function list
  14. ;===============================================================================
  15. ; _GUICtrlListViewCopyItems
  16. ; _GUICtrlListViewDeleteAllItems
  17. ; _GUICtrlListViewDeleteColumn
  18. ; _GUICtrlListViewDeleteItem
  19. ; _GUICtrlListViewDeleteItemsSelected
  20. ; _GUICtrlListViewEnsureVisible
  21. ; _GUICtrlListViewGetBackColor
  22. ; _GUICtrlListViewGetCallBackMask
  23. ; _GUICtrlListViewGetCheckedState
  24. ; _GUICtrlListViewGetColumnOrder
  25. ; _GUICtrlListViewGetColumnWidth
  26. ; _GUICtrlListViewGetCounterPage
  27. ; _GUICtrlListViewGetCurSel
  28. ; _GUICtrlListViewGetExtendedListViewStyle
  29. ; _GUICtrlListViewGetHeader
  30. ; _GUICtrlListViewGetHotCursor
  31. ; _GUICtrlListViewGetHotItem
  32. ; _GUICtrlListViewGetHoverTime
  33. ; _GUICtrlListViewGetItemCount
  34. ; _GUICtrlListViewGetItemText
  35. ; _GUICtrlListViewGetItemTextArray
  36. ; _GUICtrlListViewGetNextItem
  37. ; _GUICtrlListViewGetSelectedCount
  38. ; _GUICtrlListViewGetSelectedIndices
  39. ; _GUICtrlListViewGetSubItemsCount
  40. ; _GUICtrlListViewGetTopIndex
  41. ; _GUICtrlListViewGetUnicodeFormat
  42. ; _GUICtrlListViewHideColumn
  43. ; _GUICtrlListViewInsertColumn
  44. ; _GUICtrlListViewInsertItem
  45. ; _GUICtrlListViewJustifyColumn
  46. ; _GUICtrlListViewScroll
  47. ; _GUICtrlListViewSetCheckState
  48. ; _GUICtrlListViewSetColumnHeaderText
  49. ; _GUICtrlListViewSetColumnOrder
  50. ; _GUICtrlListViewSetColumnWidth
  51. ; _GUICtrlListViewSetHotItem
  52. ; _GUICtrlListViewSetHoverTime
  53. ; _GUICtrlListViewSetItemCount
  54. ; _GUICtrlListViewSetItemSelState
  55. ; _GUICtrlListViewSetItemText
  56. ; _GUICtrlListViewSort
  57. ;===============================================================================
  58.  
  59. ;===============================================================================
  60. ;
  61. ; Description:            _GUICtrlListViewCopyItems
  62. ; Parameter(s):        $h_Source_listview - controlID
  63. ;                            $h_Destination_listview - control ID
  64. ;                            $i_DelFlag - Delete after copying (Default: 0)
  65. ; Requirement:            None
  66. ; Return Value(s):    None
  67. ; User CallTip:        _GUICtrlListViewCopyItems($h_Source_listview, $h_Destination_listview[, $i_DelFlag = 0]) Copy Items between 2 list-view controls (required: <GuiListView.au3>)
  68. ; Author(s):            Gary Frost (custompcs at charter dot net)
  69. ; Note(s):                :
  70. ;
  71. ;===============================================================================
  72. Func _GUICtrlListViewCopyItems($h_Source_listview, $h_Destination_listview, $i_DelFlag = 0)
  73.     Local $a_indices, $i, $s_item, $items
  74.     $items = _GUICtrlListViewGetItemCount($h_Source_listview)
  75.     
  76.     If BitAND(_GUICtrlListViewGetExtendedListViewStyle($h_Source_listview), $LVS_EX_CHECKBOXES) == $LVS_EX_CHECKBOXES Then
  77.         For $i = 0 To $items - 1
  78.             If (_GUICtrlListViewGetCheckedState($h_Source_listview, $i)) Then
  79.                 If IsArray($a_indices) Then
  80.                     ReDim $a_indices[UBound($a_indices) + 1]
  81.                 Else
  82.                     Local $a_indices[2]
  83.                 EndIf
  84.                 $a_indices[0] = $a_indices[0] + 1
  85.                 $a_indices[UBound($a_indices) - 1] = $i
  86.             EndIf
  87.         Next
  88.         
  89.         If (IsArray($a_indices)) Then
  90.             For $i = 1 To $a_indices[0]
  91.                 $s_item = _GUICtrlListViewGetItemText($h_Source_listview, $a_indices[$i])
  92.                 _GUICtrlListViewSetCheckState($h_Source_listview, $a_indices[$i], 0)
  93.                 _GUICtrlListViewInsertItem($h_Destination_listview, _GUICtrlListViewGetItemCount($h_Destination_listview), $s_item)
  94.             Next
  95.             If $i_DelFlag Then
  96.                 For $i = $a_indices[0] To 1 Step - 1
  97.                     _GUICtrlListViewSetItemSelState($h_Source_listview, $a_indices[$i])
  98.                     _GUICtrlListViewDeleteItem($h_Source_listview, $a_indices[$i])
  99.                 Next
  100.             EndIf
  101.         EndIf
  102.     EndIf
  103.     If (_GUICtrlListViewGetSelectedCount($h_Source_listview)) Then
  104.         $a_indices = _GUICtrlListViewGetSelectedIndices($h_Source_listview, 1)
  105.         For $i = 1 To $a_indices[0]
  106.             $s_item = _GUICtrlListViewGetItemText($h_Source_listview, $a_indices[$i])
  107.             _GUICtrlListViewInsertItem($h_Destination_listview, _GUICtrlListViewGetItemCount($h_Destination_listview), $s_item)
  108.         Next
  109.         _GUICtrlListViewSetItemSelState($h_Source_listview, -1, 0)
  110.         If $i_DelFlag Then
  111.             For $i = $a_indices[0] To 1 Step - 1
  112.                 _GUICtrlListViewSetItemSelState($h_Source_listview, $a_indices[$i])
  113.                 _GUICtrlListViewDeleteItem($h_Source_listview, $a_indices[$i])
  114.             Next
  115.         EndIf
  116.     EndIf
  117. EndFunc   ;==>_GUICtrlListViewCopyItems
  118.  
  119. ;===============================================================================
  120. ;
  121. ; Description:            _GUICtrlListViewDeleteAllItems
  122. ; Parameter(s):        $h_listview - controlID
  123. ; Requirement:            None
  124. ; Return Value(s):    Returns TRUE if successful, or FALSE otherwise
  125. ; User CallTip:        _GUICtrlListViewDeleteAllItems($h_listview) Removes all items from a list-view control (required: <GuiListView.au3>)
  126. ; Author(s):            Gary Frost (custompcs at charter dot net)
  127. ; Note(s):                :
  128. ;
  129. ;===============================================================================
  130. Func _GUICtrlListViewDeleteAllItems($h_listview)
  131.     Local $i_index, $control_ID
  132.     If IsHWnd($h_listview) Then
  133.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_DELETEALLITEMS, "int", 0, "int", 0)
  134.         Return $a_ret[0]
  135.     Else
  136.         For $i_index = _GUICtrlListViewGetItemCount($h_listview) - 1 To 0 Step - 1
  137.             _GUICtrlListViewSetItemSelState($h_listview, $i_index, 1)
  138.             $control_ID = GUICtrlRead($h_listview)
  139.             If $control_ID Then GUICtrlDelete($control_ID)
  140.         Next
  141.         If _GUICtrlListViewGetItemCount($h_listview) == 0 Then
  142.             Return 1
  143.         Else
  144.             Return GUICtrlSendMsg($h_listview, $LVM_DELETEALLITEMS, 0, 0)
  145.         EndIf
  146.     EndIf
  147. EndFunc   ;==>_GUICtrlListViewDeleteAllItems
  148.  
  149. ;===============================================================================
  150. ;
  151. ; Description:            _GUICtrlListViewDeleteColumn
  152. ; Parameter(s):        $h_listview - controlID
  153. ;                            $i_col - Index of the column to delete
  154. ; Requirement:            None
  155. ; Return Value(s):    Returns TRUE if successful, or FALSE otherwise
  156. ; User CallTip:        _GUICtrlListViewDeleteColumn($h_listview, $i_col) Removes a column from a list-view control (required: <GuiListView.au3>)
  157. ; Author(s):            Gary Frost (custompcs at charter dot net)
  158. ; Note(s):                Column zero of the list-view control cannot be deleted.
  159. ;                            If you must delete column zero, insert a zero length dummy
  160. ;                            column zero and delete column one and above
  161. ;
  162. ;===============================================================================
  163. Func _GUICtrlListViewDeleteColumn($h_listview, $i_col)
  164.     If IsHWnd($h_listview) Then
  165.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_DELETECOLUMN, "int", $i_col, "int", 0)
  166.         Return $a_ret[0]
  167.     Else
  168.         Return GUICtrlSendMsg($h_listview, $LVM_DELETECOLUMN, $i_col, 0)
  169.     EndIf
  170. EndFunc   ;==>_GUICtrlListViewDeleteColumn
  171.  
  172. ;===============================================================================
  173. ;
  174. ; Description:            _GUICtrlListViewDeleteItem
  175. ; Parameter(s):        $h_listview - controlID
  176. ;                            $i_index - Index of the list-view item to delete
  177. ; Requirement:            None
  178. ; Return Value(s):    Returns TRUE if successful, or FALSE otherwise
  179. ; User CallTip:        _GUICtrlListViewDeleteItem($h_listview, $i_index) Removes an item from a list-view control (required: <GuiListView.au3>)
  180. ; Author(s):            Gary Frost (custompcs at charter dot net)
  181. ; Note(s):                :
  182. ;
  183. ;===============================================================================
  184. Func _GUICtrlListViewDeleteItem($h_listview, $i_index)
  185.     Local $control_ID, $ID_Check, $a_ret
  186.     If IsHWnd($h_listview) Then
  187.         $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_DELETEITEM, "int", $i_index, "int", 0)
  188.         Return $a_ret[0]
  189.     Else
  190.         _GUICtrlListViewSetItemSelState($h_listview, $i_index)
  191.         $control_ID = GUICtrlRead($h_listview)
  192.         If $control_ID Then
  193.             GUICtrlDelete($control_ID)
  194.             _GUICtrlListViewSetItemSelState($h_listview, $i_index)
  195.             $ID_Check = GUICtrlRead($h_listview)
  196.             _GUICtrlListViewSetItemSelState($h_listview, $i_index, 0)
  197.             If $control_ID <> $ID_Check Then
  198.                 Return 1
  199.             Else
  200.                 Return GUICtrlSendMsg($h_listview, $LVM_DELETEITEM, $i_index, 0)
  201.             EndIf
  202.         Else
  203.             If Not GUICtrlSendMsg($h_listview, $LVM_DELETEITEM, $i_index, 0) Then
  204.                 $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_DELETEITEM, "int", $i_index, "int", 0)
  205.                 Return $a_ret[0]
  206.             Else
  207.                 Return 1
  208.             EndIf
  209.         EndIf
  210.     EndIf
  211. EndFunc   ;==>_GUICtrlListViewDeleteItem
  212.  
  213. ;===============================================================================
  214. ;
  215. ; Description:            _GUICtrlListViewDeleteItemsSelected
  216. ; Parameter(s):        $h_listview - controlID
  217. ; Requirement:            None
  218. ; Return Value(s):    None
  219. ; User CallTip:        _GUICtrlListViewDeleteItemsSelected($h_listview) Deletes item(s) selected (required: <GuiListView.au3>)
  220. ; Author(s):            Gary Frost (custompcs at charter dot net)
  221. ; Note(s):                Idea from Holger
  222. ;
  223. ;===============================================================================
  224. Func _GUICtrlListViewDeleteItemsSelected($h_listview)
  225.     Local $i, $ItemCount
  226.     
  227.     $ItemCount = _GUICtrlListViewGetItemCount($h_listview)
  228.     If (_GUICtrlListViewGetSelectedCount($h_listview) == $ItemCount) Then
  229.         _GUICtrlListViewDeleteAllItems($h_listview)
  230.     Else
  231.         Local $items = _GUICtrlListViewGetSelectedIndices($h_listview, 1)
  232.         _GUICtrlListViewSetItemSelState($h_listview, -1, 0)
  233.         For $i = $items[0] To 1 Step - 1
  234.             _GUICtrlListViewDeleteItem($h_listview, $items[$i])
  235.         Next
  236.     EndIf
  237. EndFunc   ;==>_GUICtrlListViewDeleteItemsSelected
  238.  
  239. ;===============================================================================
  240. ;
  241. ; Description:            _GUICtrlListViewEnsureVisible
  242. ; Parameter(s):        $h_listview - controlID
  243. ;                            $i_index - Index of the list-view item
  244. ;                            $i_bool - Value specifying whether the item must be entirely visible
  245. ; Requirement:            None
  246. ; Return Value(s):    Returns TRUE if successful, or FALSE otherwise
  247. ; User CallTip:        _GUICtrlListViewEnsureVisible($h_listview, $i_index, $i_bool) Ensures that a list-view item is either entirely or partially visible (required: <GuiListView.au3>)
  248. ; Author(s):            Gary Frost (custompcs at charter dot net)
  249. ; Note(s):                If $i_bool parameter is TRUE, no scrolling occurs if the item is at least partially visible
  250. ;
  251. ;===============================================================================
  252. Func _GUICtrlListViewEnsureVisible($h_listview, $i_index, $i_bool)
  253.     If IsHWnd($h_listview) Then
  254.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_ENSUREVISIBLE, "int", $i_index, "int", $i_bool)
  255.         Return $a_ret[0]
  256.     Else
  257.         Return GUICtrlSendMsg($h_listview, $LVM_ENSUREVISIBLE, $i_index, $i_bool)
  258.     EndIf
  259. EndFunc   ;==>_GUICtrlListViewEnsureVisible
  260.  
  261. ;===============================================================================
  262. ;
  263. ; Description:            _GUICtrlListViewGetBackColor
  264. ; Parameter(s):        $h_listview - controlID
  265. ; Requirement:            _ReverseColorOrder
  266. ; Return Value(s):    Returns the Hex RGB background color of the list-view control
  267. ; User CallTip:        _GUICtrlListViewGetBackColor($h_listview) Retrieves the background color of a list-view control (required: <GuiListView.au3>)
  268. ; Author(s):            Gary Frost (custompcs at charter dot net)
  269. ; Note(s):                :
  270. ;
  271. ;===============================================================================
  272. Func _GUICtrlListViewGetBackColor($h_listview)
  273.     Local $v_color
  274.     If IsHWnd($h_listview) Then
  275.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETBKCOLOR, "int", 0, "int", 0)
  276.         $v_color = $a_ret[0]
  277.     Else
  278.         $v_color = GUICtrlSendMsg($h_listview, $LVM_GETBKCOLOR, 0, 0)
  279.     EndIf
  280.     Return _ReverseColorOrder($v_color)
  281. EndFunc   ;==>_GUICtrlListViewGetBackColor
  282.  
  283. ;===============================================================================
  284. ;
  285. ; Description:            _GUICtrlListViewGetCallBackMask
  286. ; Parameter(s):        $h_listview - controlID
  287. ; Requirement:            None
  288. ; Return Value(s):    Returns the callback mask
  289. ; User CallTip:        _GUICtrlListViewGetCallBackMask($h_listview) Retrieves the callback mask for a list-view control (required: <GuiListView.au3>)
  290. ; Author(s):            Gary Frost (custompcs at charter dot net)
  291. ; Note(s):                :
  292. ;
  293. ;===============================================================================
  294. Func _GUICtrlListViewGetCallBackMask($h_listview)
  295.     If IsHWnd($h_listview) Then
  296.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETCALLBACKMASK, "int", 0, "int", 0)
  297.         Return $a_ret[0]
  298.     Else
  299.         Return GUICtrlSendMsg($h_listview, $LVM_GETCALLBACKMASK, 0, 0)
  300.     EndIf
  301. EndFunc   ;==>_GUICtrlListViewGetCallBackMask
  302.  
  303. ;===============================================================================
  304. ;
  305. ; Description:            _GUICtrlListViewGetCheckedState
  306. ; Parameter(s):        $h_listview - controlID
  307. ;                            $i_index - zero-based index to retrieve item check state from
  308. ; Requirement:            $LVS_EX_CHECKBOXES used in extended style when creating listview
  309. ; Return Value(s):    Returns 1 if checked
  310. ;                            Returns 0 if not checked
  311. ;                            If error then $LV_ERR is returned
  312. ; User CallTip:        _GUICtrlListViewGetCheckedState($h_listview, $i_index) Returns the check state for a list-view control item (required: <GuiListView.au3>)
  313. ; Author(s):            Gary Frost (custompcs at charter dot net)
  314. ; Note(s):                :
  315. ;
  316. ;===============================================================================
  317. Func _GUICtrlListViewGetCheckedState($h_listview, $i_index)
  318.     Local $isChecked = 0, $ret
  319.     If IsHWnd($h_listview) Then
  320.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETITEMSTATE, "int", $i_index, "int", $LVIS_STATEIMAGEMASK)
  321.         $ret = $a_ret[0]
  322.     Else
  323.         $ret = GUICtrlSendMsg($h_listview, $LVM_GETITEMSTATE, $i_index, $LVIS_STATEIMAGEMASK)
  324.     EndIf
  325.     If (Not $ret) Then
  326.         $ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETITEMSTATE, "int", $i_index, "int", $LVIS_STATEIMAGEMASK)
  327.         If ($ret[0] == -1) Then
  328.             Return $LV_ERR
  329.         Else
  330.             If (BitAND($ret[0], 0x3000) == 0x3000) Then
  331.                 $isChecked = 0
  332.             Else
  333.                 $isChecked = 1
  334.             EndIf
  335.         EndIf
  336.     Else
  337.         If (BitAND($ret, 0x2000) == 0x2000) Then $isChecked = 1
  338.     EndIf
  339.     Return $isChecked
  340. EndFunc   ;==>_GUICtrlListViewGetCheckedState
  341.  
  342. ;===============================================================================
  343. ;
  344. ; Description:            _GUICtrlListViewGetColumnOrder
  345. ; Parameter(s):        $h_listview - controlID
  346. ; Requirement:            None
  347. ; Return Value(s):    "|" delimited string
  348. ;                            If an error occurs, the return value is $LV_ERR.
  349. ; User CallTip:        _GUICtrlListViewGetColumnOrder($h_listview) Retrieves the current left-to-right order of columns in a list-view control. (required: <GuiListView.au3>)
  350. ; Author(s):            Gary Frost (custompcs at charter dot net)
  351. ; Note(s):
  352. ;
  353. ;===============================================================================
  354. Func _GUICtrlListViewGetColumnOrder($h_listview)
  355.     Local $i_cols = _GUICtrlListViewGetSubItemsCount($h_listview)
  356.     Local $i, $ret
  357.     Local $struct = ""
  358.     For $i = 1 To $i_cols
  359.         $struct &= "int;"
  360.     Next
  361.     $struct = StringTrimRight($struct, 1)
  362.     Local $p = DllStructCreate($struct)
  363.     If @error Then Return $LV_ERR
  364.     If IsHWnd($h_listview) Then
  365.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETCOLUMNORDERARRAY, "int", $i_cols, "ptr", DllStructGetPtr($p))
  366.         $ret = $a_ret[0]
  367.     Else
  368.         $ret = GUICtrlSendMsg($h_listview, $LVM_GETCOLUMNORDERARRAY, $i_cols, DllStructGetPtr($p))
  369.     EndIf
  370.     If (Not $ret) Then Return $LV_ERR
  371.     Local $s_cols
  372.     For $i = 1 To $i_cols
  373.         $s_cols &= DllStructGetData($p, $i) & "|"
  374.     Next
  375.     $s_cols = StringTrimRight($s_cols, 1)
  376.     Return $s_cols
  377. EndFunc   ;==>_GUICtrlListViewGetColumnOrder
  378.  
  379. ;===============================================================================
  380. ;
  381. ; Description:            _GUICtrlListViewGetColumnWidth
  382. ; Parameter(s):        $h_listview - controlID
  383. ;                            $i_col - Index of the column. This parameter is ignored in list view
  384. ; Requirement:            None
  385. ; Return Value(s):    Returns the column width if successful, or zero otherwise
  386. ; User CallTip:        _GUICtrlListViewGetColumnWidth($h_listview, $i_col) Retrieves the width of a column in report or list view (required: <GuiListView.au3>)
  387. ; Author(s):            Gary Frost (custompcs at charter dot net)
  388. ; Note(s):                If this message is sent to a list-view control with the LVS_REPORT style
  389. ;                            and the specified column doesn't exist, the return value is undefined
  390. ;
  391. ;===============================================================================
  392. Func _GUICtrlListViewGetColumnWidth($h_listview, $i_col)
  393.     If IsHWnd($h_listview) Then
  394.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETCOLUMNWIDTH, "int", $i_col, "int", 0)
  395.         Return $a_ret[0]
  396.     Else
  397.         Return GUICtrlSendMsg($h_listview, $LVM_GETCOLUMNWIDTH, $i_col, 0)
  398.     EndIf
  399. EndFunc   ;==>_GUICtrlListViewGetColumnWidth
  400.  
  401. ;===============================================================================
  402. ;
  403. ; Description:            _GUICtrlListViewGetCounterPage
  404. ; Parameter(s):        $h_listview - controlID
  405. ; Requirement:            None
  406. ; Return Value(s):    Returns the number of fully visible items if successful.
  407. ;                            If the current view is icon or small icon view, the return value
  408. ;                            is the total number of items in the list-view control.
  409. ; User CallTip:        _GUICtrlListViewGetCounterPage($h_listview) Calculates the number of items that can fit vertically in the visible area of a list-view control (required: <GuiListView.au3>)
  410. ; Author(s):            Gary Frost (custompcs at charter dot net)
  411. ; Note(s):                :
  412. ;
  413. ;===============================================================================
  414. Func _GUICtrlListViewGetCounterPage($h_listview)
  415.     If IsHWnd($h_listview) Then
  416.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETCOUNTPERPAGE, "int", 0, "int", 0)
  417.         Return $a_ret[0]
  418.     Else
  419.         Return GUICtrlSendMsg($h_listview, $LVM_GETCOUNTPERPAGE, 0, 0)
  420.     EndIf
  421. EndFunc   ;==>_GUICtrlListViewGetCounterPage
  422.  
  423. ;===============================================================================
  424. ;
  425. ; Description:            _GUICtrlListViewGetCurSel
  426. ; Parameter(s):        $h_listview - controlID
  427. ; Requirement:            None
  428. ; Return Value(s):    Index of current selection (zero-based index)
  429. ;                            returns $LV_ERR if error
  430. ; User CallTip:        _GUICtrlListViewGetCurSel($h_listview) Retrieve the index of current selection (required: <GuiListView.au3>)
  431. ; Author(s):            Gary Frost (custompcs at charter dot net)
  432. ; Note(s):                :
  433. ;
  434. ;===============================================================================
  435. Func _GUICtrlListViewGetCurSel($h_listview)
  436.     If _GUICtrlListViewGetSelectedCount($h_listview) > 0 Then
  437.         Return Int(_GUICtrlListViewGetSelectedIndices($h_listview))
  438.     Else
  439.         Return $LV_ERR
  440.     EndIf
  441. EndFunc   ;==>_GUICtrlListViewGetCurSel
  442.  
  443. ;===============================================================================
  444. ;
  445. ; Description:            _GUICtrlListViewGetExtendedListViewStyle
  446. ; Parameter(s):        $h_listview - controlID
  447. ; Requirement:            None
  448. ; Return Value(s):    Returns a DWORD that represents the styles currently in use for a given list-view control.
  449. ;                            This value can be a combination of Extended List-View Styles
  450. ; User CallTip:        _GUICtrlListViewGetExtendedListViewStyle($h_listview) Retrieves the extended styles that are currently in use for a given list-view control (required: <GuiListView.au3>)
  451. ; Author(s):            Gary Frost (custompcs at charter dot net)
  452. ; Note(s):                :
  453. ;
  454. ;===============================================================================
  455. Func _GUICtrlListViewGetExtendedListViewStyle($h_listview)
  456.     If IsHWnd($h_listview) Then
  457.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETEXTENDEDLISTVIEWSTYLE, "int", 0, "int", 0)
  458.         Return $a_ret[0]
  459.     Else
  460.         Return GUICtrlSendMsg($h_listview, $LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
  461.     EndIf
  462. EndFunc   ;==>_GUICtrlListViewGetExtendedListViewStyle
  463.  
  464. ;===============================================================================
  465. ;
  466. ; Description:            _GUICtrlListViewGetHeader
  467. ; Parameter(s):        $h_listview - controlID
  468. ; Requirement:            None
  469. ; Return Value(s):    Returns the handle to the header control.
  470. ; User CallTip:        _GUICtrlListViewGetHeader($h_listview) Retrieves the handle to the header control used by the list-view control (required: <GuiListView.au3>)
  471. ; Author(s):            Gary Frost (custompcs at charter dot net)
  472. ; Note(s):                :
  473. ;
  474. ;===============================================================================
  475. Func _GUICtrlListViewGetHeader($h_listview)
  476.     If IsHWnd($h_listview) Then
  477.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETHEADER, "int", 0, "int", 0)
  478.         Return $a_ret[0]
  479.     Else
  480.         Return GUICtrlSendMsg($h_listview, $LVM_GETHEADER, 0, 0)
  481.     EndIf
  482. EndFunc   ;==>_GUICtrlListViewGetHeader
  483.  
  484. ;===============================================================================
  485. ;
  486. ; Description:            _GUICtrlListViewGetHotCursor
  487. ; Parameter(s):        $h_listview - controlID
  488. ; Requirement:            None
  489. ; Return Value(s):    Returns an HCURSOR value that is the handle to the cursor that
  490. ;                            the list-view control uses when hot tracking is enabled.
  491. ; User CallTip:        _GUICtrlListViewGetHotCursor($h_listview) Retrieves the HCURSOR value used when the pointer is over an item while hot tracking is enabled (required: <GuiListView.au3>)
  492. ; Author(s):            Gary Frost (custompcs at charter dot net)
  493. ; Note(s):                A list-view control uses hot tracking and hover selection when
  494. ;                            the LVS_EX_TRACKSELECT style is set.
  495. ;
  496. ;===============================================================================
  497. Func _GUICtrlListViewGetHotCursor($h_listview)
  498.     If IsHWnd($h_listview) Then
  499.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETHOTCURSOR, "int", 0, "int", 0)
  500.         Return $a_ret[0]
  501.     Else
  502.         Return GUICtrlSendMsg($h_listview, $LVM_GETHOTCURSOR, 0, 0)
  503.     EndIf
  504. EndFunc   ;==>_GUICtrlListViewGetHotCursor
  505.  
  506. ;===============================================================================
  507. ;
  508. ; Description:            _GUICtrlListViewGetHotItem
  509. ; Parameter(s):        $h_listview - controlID
  510. ; Requirement:            None
  511. ; Return Value(s):    Returns the index of the item that is hot.
  512. ; User CallTip:        _GUICtrlListViewGetHotItem($h_listview) Retrieves the index of the hot item (required: <GuiListView.au3>)
  513. ; Author(s):            Gary Frost (custompcs at charter dot net)
  514. ; Note(s):                :
  515. ;
  516. ;===============================================================================
  517. Func _GUICtrlListViewGetHotItem($h_listview)
  518.     If IsHWnd($h_listview) Then
  519.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETHOTITEM, "int", 0, "int", 0)
  520.         Return $a_ret[0]
  521.     Else
  522.         Return GUICtrlSendMsg($h_listview, $LVM_GETHOTITEM, 0, 0)
  523.     EndIf
  524. EndFunc   ;==>_GUICtrlListViewGetHotItem
  525.  
  526. ;===============================================================================
  527. ;
  528. ; Description:            _GUICtrlListViewGetHoverTime
  529. ; Parameter(s):        $h_listview - controlID
  530. ; Requirement:            None
  531. ; Return Value(s):    Returns the amount of time, in milliseconds,
  532. ;                            that the mouse cursor must hover over an item
  533. ;                            before it is selected.
  534. ;                            If the return value is -1, then the hover
  535. ;                            time is the default hover time.
  536. ; User CallTip:        _GUICtrlListViewGetHoverTime($h_listview) Retrieves the amount of time that the mouse cursor must hover over an item before it is selected (required: <GuiListView.au3>)
  537. ; Author(s):            Gary Frost (custompcs at charter dot net)
  538. ; Note(s):                The hover time only affects list-view controls that have the
  539. ;                            LVS_EX_TRACKSELECT, LVS_EX_ONECLICKACTIVATE, or
  540. ;                            LVS_EX_TWOCLICKACTIVATE extended list-view style.
  541. ;
  542. ;===============================================================================
  543. Func _GUICtrlListViewGetHoverTime($h_listview)
  544.     If IsHWnd($h_listview) Then
  545.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETHOVERTIME, "int", 0, "int", 0)
  546.         Return $a_ret[0]
  547.     Else
  548.         Return GUICtrlSendMsg($h_listview, $LVM_GETHOVERTIME, 0, 0)
  549.     EndIf
  550. EndFunc   ;==>_GUICtrlListViewGetHoverTime
  551.  
  552. ;===============================================================================
  553. ;
  554. ; Description:            _GUICtrlListViewGetItemCount
  555. ; Parameter(s):        $h_listview - controlID
  556. ; Requirement:            None
  557. ; Return Value(s):    Returns the number of items.
  558. ; User CallTip:        _GUICtrlListViewGetItemCount($h_listview) Retrieves the number of items in a list-view control (required: <GuiListView.au3>)
  559. ; Author(s):            Gary Frost (custompcs at charter dot net)
  560. ; Note(s):                :
  561. ;
  562. ;===============================================================================
  563. Func _GUICtrlListViewGetItemCount($h_listview)
  564.     If IsHWnd($h_listview) Then
  565.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETITEMCOUNT, "int", 0, "int", 0)
  566.         Return $a_ret[0]
  567.     Else
  568.         Return GUICtrlSendMsg($h_listview, $LVM_GETITEMCOUNT, 0, 0)
  569.     EndIf
  570. EndFunc   ;==>_GUICtrlListViewGetItemCount
  571.  
  572. ;===============================================================================
  573. ;
  574. ; Description:            _GUICtrlListViewGetItemText
  575. ; Parameter(s):        $h_listview - controlID
  576. ;                            $i_Item - index of item to retrieve from (zero-based index)
  577. ;                            $i_SubItem - column of item to retrieve from (zero-based index)
  578. ; Requirement:            None
  579. ; Return Value(s):    If $i_SubItem = -1 then row is returned pipe delimited
  580. ;                            else text from $i_SubItem position is returned
  581. ;                            If error $LV_ERR is returned
  582. ; User CallTip:        _GUICtrlListViewGetItemText($h_listview[, $i_Item=-1[, $i_SubItem=-1]]) Retrieves some or all of a list-view item (required: <GuiListView.au3>)
  583. ; Author(s):            Gary Frost (custompcs at charter dot net)
  584. ; Note(s):                :
  585. ;
  586. ;===============================================================================
  587. Func _GUICtrlListViewGetItemText($h_listview, $i_Item = -1, $i_SubItem = -1)
  588.     Local $struct = "int;int;int;int;int;ptr;int;int;int;int;int;ptr", $p, $sp
  589.     $p = DllStructCreate($struct)
  590.     If @error Then Return SetError($LV_ERR,$LV_ERR,"")
  591.     $sp = DllStructCreate("char[4096]")
  592.     If @error Then Return SetError($LV_ERR,$LV_ERR,"")
  593.     If $i_Item = -1 Then $i_Item = Int(_GUICtrlListViewGetSelectedIndices($h_listview))
  594.     If $i_Item = -1 Then Return SetError($LV_ERR,$LV_ERR,"")
  595.     
  596.     DllStructSetData($p, 1, $LVIF_TEXT)
  597.     DllStructSetData($p, 6, DllStructGetPtr($sp))
  598.     DllStructSetData($p, 7, 4096)
  599.     
  600.     Local $x_indice, $count, $str = ""
  601.     
  602.     $count = _GUICtrlListViewGetSubItemsCount($h_listview)
  603.     
  604.     DllStructSetData($p, 2, $i_Item)
  605.     If ($i_SubItem == -1) Then; return all the subitems in the item
  606.         For $x_indice = 0 To $count - 1 Step 1
  607.             DllStructSetData($p, 3, $x_indice)
  608.             If IsHWnd($h_listview) Then
  609.                 DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETITEMTEXTA, "int", $i_Item, "ptr", DllStructGetPtr($p))
  610.                 If @error Then
  611.                     SetError($LV_ERR)
  612.                 EndIf
  613.             Else
  614.                 If Not GUICtrlSendMsg($h_listview, $LVM_GETITEMTEXTA, $i_Item, DllStructGetPtr($p)) Then
  615.                     SetError($LV_ERR)
  616.                 EndIf
  617.             EndIf
  618.             If Not @error Then
  619.                 If StringLen($str) Then
  620.                     $str = $str & "|" & DllStructGetData($sp, 1)
  621.                 Else
  622.                     $str = DllStructGetData($sp, 1)
  623.                 EndIf
  624.             Else
  625.                 If StringLen($str) Then
  626.                     $str = $str & "|"
  627.                 EndIf
  628.             EndIf
  629.         Next
  630.         Return $str
  631.     ElseIf ($i_SubItem < $count) Then; return the subitem in the item
  632.         DllStructSetData($p, 3, $i_SubItem)
  633.         If IsHWnd($h_listview) Then
  634.             DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETITEMTEXTA, "int", $i_Item, "ptr", DllStructGetPtr($p))
  635.             If @error Then Return SetError($LV_ERR,$LV_ERR,"")
  636.         Else
  637.             If Not GUICtrlSendMsg($h_listview, $LVM_GETITEMTEXTA, $i_Item, DllStructGetPtr($p)) Then Return SetError($LV_ERR,$LV_ERR,"")
  638.         EndIf
  639.         Return DllStructGetData($sp, 1)
  640.     Else
  641.         ; subitem is out of range
  642.         Return SetError($LV_ERR,$LV_ERR,"")
  643.     EndIf
  644. EndFunc   ;==>_GUICtrlListViewGetItemText
  645.  
  646. ;===============================================================================
  647. ;
  648. ; Description:            _GUICtrlListViewGetItemTextArray
  649. ; Parameter(s):        $h_listview - controlID/handle
  650. ;                            $i_Item - index of item to retrieve from (zero-based index)
  651. ; Requirement:            None
  652. ; Return Value(s):    Returns an array of the subitems
  653. ;                            If $i_Item = -1 current selection is used
  654. ;                            If error $LV_ERR is returned
  655. ; User CallTip:        _GUICtrlListViewGetItemTextA($h_listview[, $i_Item=-1]) Retrieves all of a list-view item (required: <GuiListView.au3>)
  656. ; Author(s):            Gary Frost (custompcs at charter dot net)
  657. ; Note(s):                :
  658. ;
  659. ;===============================================================================
  660. Func _GUICtrlListViewGetItemTextArray($h_listview, $i_Item = -1)
  661.     Local $v_ret = _GUICtrlListViewGetItemText($h_listview, $i_Item)
  662.     If @error Or $v_ret = "" Then Return SetError($LV_ERR,$LV_ERR,"")
  663.     Return StringSplit($v_ret, "|")
  664. EndFunc   ;==>_GUICtrlListViewGetItemTextArray
  665.  
  666. ;===============================================================================
  667. ;
  668. ; Description:            _GUICtrlListViewGetNextItem
  669. ; Parameter(s):        $h_GUI - GUI Window handle
  670. ;                            $h_listview - controlID
  671. ;                            $i_index - Index of the item to begin the search with
  672. ;                            $i_direction - Specifies the relationship to the item specified in $i_index
  673. ; Requirement:            None
  674. ; Return Value(s):    Returns the index of the next item if successful, or $LV_ERR otherwise.
  675. ; User CallTip:        _GUICtrlListViewGetNextItem($h_GUI, $h_listview[, $i_index=-1[, $i_direction=0x0]]) Returns the index of the next item (required: <GuiListView.au3>)
  676. ; Author(s):            Gary Frost (custompcs at charter dot net)
  677. ; Note(s):                If $i_index = -1 then find the first item that matches the specified $i_direction.
  678. ;                            The specified item itself is excluded from the search.
  679. ;
  680. ;                            $i_direction
  681. ;                                Searches by index.
  682. ;                                    $LVNI_ALL
  683. ;                                        Searches for a subsequent item by index, the default value.
  684. ;                                Searches by physical relationship to the index of the item where the search is to begin.
  685. ;                                    $LVNI_ABOVE
  686. ;                                        Searches for an item that is above the specified item.
  687. ;                                    $LVNI_BELOW
  688. ;                                        Searches for an item that is below the specified item.
  689. ;                                    $LVNI_TOLEFT
  690. ;                                        Searches for an item to the left of the specified item.
  691. ;                                    $LVNI_TORIGHT
  692. ;                                        Searches for an item to the right of the specified item.
  693. ;
  694. ;===============================================================================
  695. Func _GUICtrlListViewGetNextItem($h_GUI, $h_listview, $i_index = -1, $i_direction = 0x0)
  696.     Local $ret, $h_lv
  697.     If IsHWnd($h_listview) Then
  698.         $h_lv = $h_listview
  699.     Else
  700.         $h_lv = ControlGetHandle($h_GUI, "", $h_listview)
  701.     EndIf
  702.     If ($i_direction == $LVNI_ALL Or $i_direction == $LVNI_ABOVE Or _
  703.             $i_direction == $LVNI_BELOW Or $i_direction == $LVNI_TOLEFT Or _
  704.             $i_direction == $LVNI_TORIGHT) Then
  705.         $ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_lv, "int", $LVM_GETNEXTITEM, "int", $i_index, "int", $i_direction)
  706.         Return $ret[0]
  707.     Else
  708.         Return $LV_ERR
  709.     EndIf
  710. EndFunc   ;==>_GUICtrlListViewGetNextItem
  711.  
  712. ;===============================================================================
  713. ;
  714. ; Description:            _GUICtrlListViewGetSelectedCount
  715. ; Parameter(s):        $h_listview - controlID
  716. ; Requirement:            None
  717. ; Return Value(s):    Returns the number of selected items
  718. ; User CallTip:        _GUICtrlListViewGetSelectedCount($h_listview) Determines the number of selected items in a list-view control (required: <GuiListView.au3>)
  719. ; Author(s):            Gary Frost (custompcs at charter dot net)
  720. ; Note(s):                :
  721. ;
  722. ;===============================================================================
  723. Func _GUICtrlListViewGetSelectedCount($h_listview)
  724.     If IsHWnd($h_listview) Then
  725.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETSELECTEDCOUNT, "int", 0, "int", 0)
  726.         Return $a_ret[0]
  727.     Else
  728.         Return GUICtrlSendMsg($h_listview, $LVM_GETSELECTEDCOUNT, 0, 0)
  729.     EndIf
  730. EndFunc   ;==>_GUICtrlListViewGetSelectedCount
  731.  
  732. ;===============================================================================
  733. ;
  734. ; Description:            _GUICtrlListViewGetSelectedIndices
  735. ; Parameter(s):        $h_listview - controlID
  736. ;                            $i_ReturnType - Optional: return a string or array
  737. ; Requirement:            None
  738. ; Return Value(s):    If $i_ReturnType = 0 then Return pipe delimited string of indices of selected item(s)
  739. ;                            If $i_ReturnType = 1 then Return array of indices of selected item(s)
  740. ;                            If no items selected return $LV_ERR
  741. ; User CallTip:        _GUICtrlListViewGetSelectedIndices($h_listview[, $i_ReturnType=0]) Retrieve indices of selected item(s) in a list-view control (required: <GuiListView.au3>)
  742. ; Author(s):            Gary Frost (custompcs at charter dot net)
  743. ; Note(s):                :
  744. ;
  745. ;===============================================================================
  746. Func _GUICtrlListViewGetSelectedIndices($h_listview, $i_ReturnType = 0)
  747.     Local $v_indices
  748.     Local $x_indice, $v_ret
  749.     For $x_indice = 0 To _GUICtrlListViewGetItemCount($h_listview)
  750.         If IsHWnd($h_listview) Then
  751.             $v_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETITEMSTATE, "int", $x_indice, "int", $LVIS_SELECTED)
  752.             If $v_ret[0]Then
  753.                 If (Not $i_ReturnType) Then
  754.                     If StringLen($v_indices) Then
  755.                         $v_indices = $v_indices & "|" & $x_indice
  756.                     Else
  757.                         $v_indices = $x_indice
  758.                     EndIf
  759.                 Else
  760.                     If Not IsArray($v_indices) Then
  761.                         Dim $v_indices[1]
  762.                     Else
  763.                         ReDim $v_indices[UBound($v_indices) + 1]
  764.                     EndIf
  765.                     $v_indices[0] = UBound($v_indices) - 1
  766.                     $v_indices[UBound($v_indices) - 1] = $x_indice
  767.                 EndIf
  768.             EndIf
  769.         Else
  770.             $v_ret = GUICtrlSendMsg($h_listview, $LVM_GETITEMSTATE, $x_indice, $LVIS_SELECTED)
  771.             If $v_ret Then
  772.                 If (Not $i_ReturnType) Then
  773.                     If StringLen($v_indices) Then
  774.                         $v_indices = $v_indices & "|" & $x_indice
  775.                     Else
  776.                         $v_indices = $x_indice
  777.                     EndIf
  778.                 Else
  779.                     If Not IsArray($v_indices) Then
  780.                         Dim $v_indices[2]
  781.                     Else
  782.                         ReDim $v_indices[UBound($v_indices) + 1]
  783.                     EndIf
  784.                     $v_indices[0] = UBound($v_indices) - 1
  785.                     $v_indices[UBound($v_indices) - 1] = $x_indice
  786.                 EndIf
  787.             EndIf
  788.         EndIf
  789.     Next
  790.     If (StringLen($v_indices) > 0 Or IsArray($v_indices)) Then
  791.         Return $v_indices
  792.     Else
  793.         Return $LV_ERR
  794.     EndIf
  795. EndFunc   ;==>_GUICtrlListViewGetSelectedIndices
  796.  
  797. ;===============================================================================
  798. ;
  799. ; Description:            _GUICtrlListViewGetSubItemsCount
  800. ; Parameter(s):        $h_listview - controlID/handle
  801. ; Requirement:            None
  802. ; Return Value(s):    Number of columns
  803. ; User CallTip:        _GUICtrlListViewGetSubItemsCount(ByRef $h_listview) Retrieve the number of columns (required: <GuiListView.au3>)
  804. ; Author(s):            Gary Frost (custompcs at charter dot net)
  805. ; Note(s):                :
  806. ;
  807. ;===============================================================================
  808. Func _GUICtrlListViewGetSubItemsCount($h_listview)
  809.     Local $num_cols = 0, $width
  810.     While 1
  811.         $width = _GUICtrlListViewGetColumnWidth($h_listview, $num_cols)
  812.         If _GUICtrlListViewSetColumnWidth($h_listview, $num_cols, $width) Then
  813.             _GUICtrlListViewSetColumnWidth($h_listview, $num_cols, $width)
  814.             $num_cols += 1
  815.         Else
  816.             ExitLoop
  817.         EndIf
  818.     WEnd
  819.     Return $num_cols
  820. EndFunc   ;==>_GUICtrlListViewGetSubItemsCount
  821.  
  822. ;===============================================================================
  823. ;
  824. ; Description:            _GUICtrlListViewGetTopIndex
  825. ; Parameter(s):        $h_listview - controlID
  826. ; Requirement:            None
  827. ; Return Value(s):    Returns the index of the item if successful
  828. ;                            zero if the list-view control is in icon or small icon view.
  829. ; User CallTip:        _GUICtrlListViewGetTopIndex($h_listview) Retrieves the index of the topmost visible item when in list or report view (required: <GuiListView.au3>)
  830. ; Author(s):            Gary Frost (custompcs at charter dot net)
  831. ; Note(s):                :
  832. ;
  833. ;===============================================================================
  834. Func _GUICtrlListViewGetTopIndex($h_listview)
  835.     If IsHWnd($h_listview) Then
  836.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETTOPINDEX, "int", 0, "int", 0)
  837.         Return $a_ret[0]
  838.     Else
  839.         Return GUICtrlSendMsg($h_listview, $LVM_GETTOPINDEX, 0, 0)
  840.     EndIf
  841. EndFunc   ;==>_GUICtrlListViewGetTopIndex
  842.  
  843. ;===============================================================================
  844. ;
  845. ; Description:            _GUICtrlListViewGetUnicodeFormat
  846. ; Parameter(s):        $h_listview - controlID
  847. ; Requirement:            None
  848. ; Return Value(s):    If this value is nonzero, the control is using Unicode characters.
  849. ;                            If this value is zero, the control is using ANSI characters.
  850. ; User CallTip:        _GUICtrlListViewGetUnicodeFormat($h_listview) Retrieves the UNICODE character format flag for the control (required: <GuiListView.au3>)
  851. ; Author(s):            Gary Frost (custompcs at charter dot net)
  852. ; Note(s):                The Unicode format flag is used by Microsoft Windows NT systems
  853. ;                            with version 4.71 of Comctl32.dll or later. This message is, thus,
  854. ;                            supported by Windows 2000 and later, and by Windows NT 4 with Microsoft
  855. ;                            Internet Explorer 4.0 or later. It is only useful on Windows 95 or Windows 98
  856. ;                            systems with version 5.80 or later of Comctl32.dll.
  857. ;
  858. ;                            This means that they must have Internet Explorer 5 or later installed.
  859. ;                            Windows 95 and Windows 98 systems with earlier versions of Internet Explorer
  860. ;                            ignore the Unicode format flag, and its value has no bearing on whether a control
  861. ;                            supports Unicode. With these systems, you will instead need to test something that
  862. ;                            requires Unicode support.
  863. ;
  864. ;===============================================================================
  865. Func _GUICtrlListViewGetUnicodeFormat($h_listview)
  866.     If IsHWnd($h_listview) Then
  867.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETUNICODEFORMAT, "int", 0, "int", 0)
  868.         Return $a_ret[0]
  869.     Else
  870.         Return GUICtrlSendMsg($h_listview, $LVM_GETUNICODEFORMAT, 0, 0)
  871.     EndIf
  872. EndFunc   ;==>_GUICtrlListViewGetUnicodeFormat
  873.  
  874. ;===============================================================================
  875. ;
  876. ; Description:            _GUICtrlListViewGetView
  877. ; Parameter(s):        $h_listview - controlID
  878. ; Requirement:            None
  879. ; Return Value(s):    Returns a DWORD that specifies the current view
  880. ; User CallTip:        _GUICtrlListViewGetView($h_listview) Retrieves the current view of a list-view control (required: <GuiListView.au3>)
  881. ; Author(s):            Gary Frost (custompcs at charter dot net)
  882. ; Note(s):                Following are the values for views.
  883. ;                                $LV_VIEW_DETAILS
  884. ;                                $LV_VIEW_ICON
  885. ;                                $LV_VIEW_LIST
  886. ;                                $LV_VIEW_SMALLICON
  887. ;                                $LV_VIEW_TILE
  888. ;
  889. ;===============================================================================
  890. Func _GUICtrlListViewGetView($h_listview)
  891.     If IsHWnd($h_listview) Then
  892.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_GETVIEW, "int", 0, "int", 0)
  893.         Return $a_ret[0]
  894.     Else
  895.         Return GUICtrlSendMsg($h_listview, $LVM_GETVIEW, 0, 0)
  896.     EndIf
  897. EndFunc   ;==>_GUICtrlListViewGetView
  898.  
  899. ;===============================================================================
  900. ;
  901. ; Description:                _GUICtrlListViewHideColumn
  902. ; Parameter(s):            $h_listview - controlID
  903. ;                                $i_col - column to hide (set width to zero)
  904. ; Requirement:                None
  905. ; Return Value(s):        Returns TRUE if successful, or FALSE otherwise
  906. ; User CallTip:            _GUICtrlListViewHideColumn($h_listview,$i_col) Hides the column "sets column width to zero" (required: <GuiListView.au3>)
  907. ; Author(s):                Gary Frost (custompcs at charter dot net)
  908. ; Note(s):              Idea from Holger
  909. ;
  910. ;===============================================================================
  911. Func _GUICtrlListViewHideColumn($h_listview, $i_col)
  912.     If IsHWnd($h_listview) Then
  913.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETCOLUMNWIDTH, "int", $i_col, "int", 0)
  914.         Return $a_ret[0]
  915.     Else
  916.         Return GUICtrlSendMsg($h_listview, $LVM_SETCOLUMNWIDTH, $i_col, 0)
  917.     EndIf
  918. EndFunc   ;==>_GUICtrlListViewHideColumn
  919.  
  920. ;===============================================================================
  921. ;
  922. ; Description:                _GUICtrlListViewInsertColumn
  923. ; Parameter(s):            $h_listview - controlID
  924. ;                                $i_col - Zero based index of column position to insert
  925. ;                                $s_text - Header Text for column
  926. ;                                $i_justification - Optional: type of justification for column
  927. ;                                $i_width - Optional: width of the new column
  928. ; Requirement:                None
  929. ; Return Value(s):        Returns TRUE if successful, or FALSE otherwise
  930. ;                                if error then $LV_ERR is returned
  931. ; User CallTip:            _GUICtrlListViewInsertColumn($h_listview, $i_col, $s_text[, $i_justification=0[, $i_width=25]]) Inserts a column into a list-view control (required: <GuiListView.au3>)
  932. ; Author(s):                Gary Frost (custompcs at charter dot net)
  933. ; Note(s):              $i_justification
  934. ;                                    0 = Left (default)
  935. ;                                    1 = Right
  936. ;                                    2 = Center
  937. ;
  938. ;===============================================================================
  939. Func _GUICtrlListViewInsertColumn($h_listview, $i_col, $s_text, $i_justification = 0, $i_width = 25)
  940.     Local $struct = "uint;int;int;ptr;int;int;int;int", $p, $sp, $a_ret, $ret
  941.     $p = DllStructCreate($struct)
  942.     If @error Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  943.     $sp = DllStructCreate("char[" & StringLen($s_text) + 1 & "]")
  944.     If @error Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  945.     DllStructSetData($sp, 1, $s_text)
  946.     DllStructSetData($p, 1, BitOR($LVCF_WIDTH, $LVCF_FMT, $LVCF_TEXT))
  947.     If ($i_justification == 1) Then
  948.         DllStructSetData($p, 2, $LVCFMT_RIGHT)
  949.     ElseIf ($i_justification == 2) Then
  950.         DllStructSetData($p, 2, $LVCFMT_CENTER)
  951.     Else
  952.         DllStructSetData($p, 2, $LVCFMT_LEFT)
  953.     EndIf
  954.     DllStructSetData($p, 3, $i_width)
  955.     DllStructSetData($p, 4, DllStructGetPtr($sp))
  956.     
  957.     If IsHWnd($h_listview) Then
  958.         $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_INSERTCOLUMNA, "int", $i_col, "ptr", DllStructGetPtr($p))
  959.         $ret = $a_ret[0]
  960.     Else
  961.         $ret = GUICtrlSendMsg($h_listview, $LVM_INSERTCOLUMNA, $i_col, DllStructGetPtr($p))
  962.     EndIf
  963.     Return $ret
  964. EndFunc   ;==>_GUICtrlListViewInsertColumn
  965.  
  966. ;===============================================================================
  967. ;
  968. ; Description:                _GUICtrlListViewInsertItem
  969. ; Parameter(s):            $h_listview - controlID
  970. ;                                $i_index - Zero based index of position to insert
  971. ;                                            if -1 the item will append to the end
  972. ;                                $s_text - text for the new item
  973. ; Requirement:                None
  974. ; Return Value(s):        Returns the index of the new item if successful, or $LV_ERR otherwise
  975. ; User CallTip:            _GUICtrlListViewInsertItem($h_listview, $i_index, $s_text) Inserts a new item in a list-view control. (required: <GuiListView.au3>)
  976. ; Author(s):                Gary Frost (custompcs at charter dot net)
  977. ; Note(s):              $s_text is "|" delimited text
  978. ;
  979. ;===============================================================================
  980. Func _GUICtrlListViewInsertItem($h_listview, $i_index, $s_text)
  981.     Local $struct = "int;int;int;int;int;ptr;int;int;int;int;int;ptr", $p, $sp, $ret
  982.     $p = DllStructCreate($struct)
  983.     If @error Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  984.     $sp = DllStructCreate("char[" & StringLen($s_text) + 1 & "]")
  985.     If @error Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  986.     Local $a_text = StringSplit($s_text, "|")
  987.     DllStructSetData($sp, 1, $a_text[1])
  988.     DllStructSetData($p, 1, $LVIF_TEXT)
  989.     If $i_index = -1 Then $i_index = _GUICtrlListViewGetItemCount($h_listview)
  990.     DllStructSetData($p, 2, $i_index)
  991.     DllStructSetData($p, 6, DllStructGetPtr($sp))
  992.     If IsHWnd($h_listview) Then
  993.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_INSERTITEMA, "int", 0, "ptr", DllStructGetPtr($p))
  994.         $ret = $a_ret[0]
  995.     Else
  996.         $ret = GUICtrlSendMsg($h_listview, $LVM_INSERTITEMA, 0, DllStructGetPtr($p))
  997.     EndIf
  998.     Local $i
  999.     For $i = 2 To $a_text[0]
  1000.         _GUICtrlListViewSetItemText($h_listview, $i_index, $i - 1, $a_text[$i])
  1001.     Next
  1002.     Return $ret
  1003. EndFunc   ;==>_GUICtrlListViewInsertItem
  1004.  
  1005. ;===============================================================================
  1006. ;
  1007. ; Description:                _GUICtrlListViewJustifyColumn
  1008. ; Parameter(s):            $h_listview - controlID
  1009. ;                                $i_col - Zero based index of column Justify
  1010. ;                                $i_justification - Optional: type of justification for column
  1011. ; Requirement:                None
  1012. ; Return Value(s):        Returns TRUE if successful, or FALSE otherwise
  1013. ;                                if error then $LV_ERR is returned
  1014. ; User CallTip:            _GUICtrlListViewJustifyColumn($h_listview, $i_col[, $i_justification=0]) Set Justification of a column for a list-view control (required: <GuiListView.au3>)
  1015. ; Author(s):                Gary Frost (custompcs at charter dot net)
  1016. ; Note(s):              $i_justification
  1017. ;                                    0 = Left (default)
  1018. ;                                    1 = Right
  1019. ;                                    2 = Center
  1020. ;
  1021. ;===============================================================================
  1022. Func _GUICtrlListViewJustifyColumn($h_listview, $i_col, $i_justification = 0)
  1023.     Local $struct = "uint;int;int;ptr;int;int;int;int", $p, $ret
  1024.     $p = DllStructCreate($struct)
  1025.     If @error Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  1026.     DllStructSetData($p, 1, $LVCF_FMT)
  1027.     If ($i_justification == 1) Then
  1028.         DllStructSetData($p, 2, $LVCFMT_RIGHT)
  1029.     ElseIf ($i_justification == 2) Then
  1030.         DllStructSetData($p, 2, $LVCFMT_CENTER)
  1031.     Else
  1032.         DllStructSetData($p, 2, $LVCFMT_LEFT)
  1033.     EndIf
  1034.     If IsHWnd($h_listview) Then
  1035.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETCOLUMNA, "int", $i_col, "ptr", DllStructGetPtr($p))
  1036.         $ret = $a_ret[0]
  1037.     Else
  1038.         $ret = GUICtrlSendMsg($h_listview, $LVM_SETCOLUMNA, $i_col, DllStructGetPtr($p))
  1039.     EndIf
  1040.     Return $ret
  1041. EndFunc   ;==>_GUICtrlListViewJustifyColumn
  1042.  
  1043. ;===============================================================================
  1044. ;
  1045. ; Description:            _GUICtrlListViewScroll
  1046. ; Parameter(s):        $h_listview - controlID
  1047. ;                            $i_dx - Value of type int that specifies the amount of horizontal scrolling in pixels.
  1048. ;                                      If the list-view control is in list-view, this value specifies the number of columns to scroll
  1049. ;                            $i_dy - Value of type int that specifies the amount of vertical scrolling in pixels
  1050. ; Requirement:            None
  1051. ; Return Value(s):    Returns TRUE if successful, or FALSE otherwise
  1052. ; User CallTip:        _GUICtrlListViewScroll($h_listview, $i_dx, $i_dy) Scrolls the content of a list-view control (required: <GuiListView.au3>)
  1053. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1054. ; Note(s):                When the list-view control is in report view, the control can
  1055. ;                            only be scrolled vertically in whole line increments.
  1056. ;
  1057. ;                            Therefore, the $i_dy parameter will be rounded to the nearest number
  1058. ;                            of pixels that form a whole line increment.
  1059. ;
  1060. ;                            For example, if the height of a line is 16 pixels and 8 is passed for $i_dy,
  1061. ;                            the list will be scrolled by 16 pixels (1 line). If 7 is passed for $i_dy,
  1062. ;                            the list will be scrolled 0 pixels (0 lines).
  1063. ;
  1064. ;===============================================================================
  1065. Func _GUICtrlListViewScroll($h_listview, $i_dx, $i_dy)
  1066.     If IsHWnd($h_listview) Then
  1067.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SCROLL, "int", $i_dx, "int", $i_dy)
  1068.         Return $a_ret[0]
  1069.     Else
  1070.         Return GUICtrlSendMsg($h_listview, $LVM_SCROLL, $i_dx, $i_dy)
  1071.     EndIf
  1072. EndFunc   ;==>_GUICtrlListViewScroll
  1073.  
  1074. ;===============================================================================
  1075. ;
  1076. ; Description:            _GUICtrlListViewSetCheckState
  1077. ; Parameter(s):        $h_listview - controlID
  1078. ;                            $i_index - Zero-based index of the item
  1079. ;                            $i_check - Optional: value to set checked state to (1 = checked, 0 = not checked)
  1080. ; Requirement:            None.
  1081. ; Return Value(s):    Returns TRUE if successful, or FALSE otherwise
  1082. ;                            If error then $LV_ERR is returned
  1083. ; User CallTip:        _GUICtrlListViewSetCheckState($h_listview, $i_index[, $i_check = 1]) Sets the checked state of a list-view control item (required: <GuiListView.au3>)
  1084. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1085. ; Note(s):                $i_index = -1 sets all items
  1086. ;                            $i_check = 1 (default)
  1087. ;
  1088. ;===============================================================================
  1089. Func _GUICtrlListViewSetCheckState($h_listview, $i_index, $i_check = 1)
  1090.     Local $struct = "int;int;int;int;int;ptr;int;int;int;int;int;ptr", $ret
  1091.     Local $p = DllStructCreate($struct)
  1092.     If @error Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  1093.     DllStructSetData($p, 1, $LVIF_STATE)
  1094.     DllStructSetData($p, 2, $i_index)
  1095.     If ($i_check) Then
  1096.         DllStructSetData($p, 4, 0x2000)
  1097.     Else
  1098.         DllStructSetData($p, 4, 0x1000)
  1099.     EndIf
  1100.     DllStructSetData($p, 5, $LVIS_STATEIMAGEMASK)
  1101.     If IsHWnd($h_listview) Then
  1102.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETITEMSTATE, "int", $i_index, "ptr", DllStructGetPtr($p))
  1103.         $ret = $a_ret[0]
  1104.     Else
  1105.         $ret = GUICtrlSendMsg($h_listview, $LVM_SETITEMSTATE, $i_index, DllStructGetPtr($p))
  1106.     EndIf
  1107.     Return $ret
  1108. EndFunc   ;==>_GUICtrlListViewSetCheckState
  1109.  
  1110. ;===============================================================================
  1111. ;
  1112. ; Description:                _GUICtrlListViewSetColumnHeaderText
  1113. ; Parameter(s):            $h_listview - controlID
  1114. ;                                $i_col - Zero based index of column Justify
  1115. ;                                $s_text - New text for column header
  1116. ; Requirement:                None
  1117. ; Return Value(s):        Returns TRUE if successful, or FALSE otherwise
  1118. ;                                if error then $LV_ERR is returned
  1119. ; User CallTip:            _GUICtrlListViewSetColumnHeaderText($h_listview, $i_col, $s_text) Change the text of a column header for a list-view control (required: <GuiListView.au3>)
  1120. ; Author(s):                Gary Frost (custompcs at charter dot net)
  1121. ; Note(s):
  1122. ;
  1123. ;===============================================================================
  1124. Func _GUICtrlListViewSetColumnHeaderText($h_listview, $i_col, $s_text)
  1125.     Local $struct = "uint;int;int;ptr;int;int;int;int", $p, $ret, $sp
  1126.     $sp = DllStructCreate("char[" & StringLen($s_text) + 1 & "]")
  1127.     If @error Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  1128.     DllStructSetData($sp, 1, $s_text)
  1129.     $p = DllStructCreate($struct)
  1130.     If @error Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  1131.     DllStructSetData($p, 1, $LVCF_TEXT)
  1132.     DllStructSetData($p, 4, DllStructGetPtr($sp))
  1133.     If IsHWnd($h_listview) Then
  1134.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETCOLUMNA, "int", $i_col, "ptr", DllStructGetPtr($p))
  1135.         $ret = $a_ret[0]
  1136.     Else
  1137.         $ret = GUICtrlSendMsg($h_listview, $LVM_SETCOLUMNA, $i_col, DllStructGetPtr($p))
  1138.     EndIf
  1139.     Return $ret
  1140. EndFunc   ;==>_GUICtrlListViewSetColumnHeaderText
  1141.  
  1142. ;===============================================================================
  1143. ;
  1144. ; Description:            _GUICtrlListViewSetColumnOrder
  1145. ; Parameter(s):        $h_listview - controlID
  1146. ;                            $s_order - "|" delimited column order .i.e "2|0|3|1"
  1147. ; Requirement:            None
  1148. ; Return Value(s):    Returns nonzero if successful, or zero otherwise.
  1149. ;                            If an error occurs, the return value is $LV_ERR.
  1150. ; User CallTip:        _GUICtrlListViewSetColumnOrder($h_listview, $s_order) Sets the left-to-right order of columns in a list-view control. (required: <GuiListView.au3>)
  1151. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1152. ; Note(s):           Columns are zero-based
  1153. ;
  1154. ;===============================================================================
  1155. Func _GUICtrlListViewSetColumnOrder($h_listview, $s_order)
  1156.     Local $i, $ret
  1157.     Local $struct = ""
  1158.     Local $a_order = StringSplit($s_order, "|")
  1159.     If @error Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  1160.     For $i = 1 To $a_order[0]
  1161.         $struct &= "int;"
  1162.     Next
  1163.     $struct = StringTrimRight($struct, 1)
  1164.     Local $p = DllStructCreate($struct)
  1165.     For $i = 1 To $a_order[0]
  1166.         DllStructSetData($p, $i, $a_order[$i])
  1167.     Next
  1168.     If IsHWnd($h_listview) Then
  1169.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETCOLUMNORDERARRAY, "int", $a_order[0], "ptr", DllStructGetPtr($p))
  1170.         $ret = $a_ret[0]
  1171.     Else
  1172.         $ret = GUICtrlSendMsg($h_listview, $LVM_SETCOLUMNORDERARRAY, $a_order[0], DllStructGetPtr($p))
  1173.     EndIf
  1174.     If (Not $ret) Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  1175.     Return $ret
  1176. EndFunc   ;==>_GUICtrlListViewSetColumnOrder
  1177.  
  1178. ;===============================================================================
  1179. ;
  1180. ; Description:            _GUICtrlListViewSetColumnWidth
  1181. ; Parameter(s):        $h_listview - controlID
  1182. ;                            $i_col - Zero-based index of a valid column. For list-view mode, this parameter must be set to zero
  1183. ;                            $i_width - New width of the column, in pixels.
  1184. ; Requirement:            None
  1185. ; Return Value(s):    Returns TRUE if successful, or FALSE otherwise
  1186. ; User CallTip:        _GUICtrlListViewSetColumnWidth($h_listview, $i_col, $i_width) Changes the width of a column (required: <GuiListView.au3>)
  1187. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1188. ; Note(s):                For list-view mode, this parameter must be set to zero
  1189. ;
  1190. ;                            $i_width
  1191. ;                                New width of the column, in pixels. For report-view mode, the following special values are supported:
  1192. ;                                    $LVSCW_AUTOSIZE
  1193. ;                                        Automatically sizes the column.
  1194. ;                                    $LVSCW_AUTOSIZE_USEHEADER
  1195. ;                                        Automatically sizes the column to fit the header text.
  1196. ;                                        If you use this value with the last column, its width
  1197. ;                                        is set to fill the remaining width of the list-view control
  1198. ;
  1199. ;===============================================================================
  1200. Func _GUICtrlListViewSetColumnWidth($h_listview, $i_col, $i_width)
  1201.     If IsHWnd($h_listview) Then
  1202.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETCOLUMNWIDTH, "int", $i_col, "int", $i_width)
  1203.         Return $a_ret[0]
  1204.     Else
  1205.         Return GUICtrlSendMsg($h_listview, $LVM_SETCOLUMNWIDTH, $i_col, $i_width)
  1206.     EndIf
  1207. EndFunc   ;==>_GUICtrlListViewSetColumnWidth
  1208.  
  1209. ;===============================================================================
  1210. ;
  1211. ; Description:            _GUICtrlListViewSetHotItem
  1212. ; Parameter(s):        $h_listview - controlID
  1213. ;                            $i_index - Zero-based index of the item to be set as the hot item
  1214. ; Requirement:            None
  1215. ; Return Value(s):    Returns the index of the item that was previously hot
  1216. ;                            $LV_ERR is returned if no item previously hot
  1217. ; User CallTip:        _GUICtrlListViewSetHotItem($h_listview, $i_index) Sets the hot item for a list-view control (required: <GuiListView.au3>)
  1218. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1219. ; Note(s):                :
  1220. ;
  1221. ;===============================================================================
  1222. Func _GUICtrlListViewSetHotItem($h_listview, $i_index)
  1223.     If IsHWnd($h_listview) Then
  1224.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETHOTITEM, "int", $i_index, "int", 0)
  1225.         Return $a_ret[0]
  1226.     Else
  1227.         Return GUICtrlSendMsg($h_listview, $LVM_SETHOTITEM, $i_index, 0)
  1228.     EndIf
  1229. EndFunc   ;==>_GUICtrlListViewSetHotItem
  1230.  
  1231. ;===============================================================================
  1232. ;
  1233. ; Description:            _GUICtrlListViewSetHoverTime
  1234. ; Parameter(s):        $h_listview - controlID
  1235. ;                            $i_time - The new amount of time, in milliseconds
  1236. ; Requirement:            None
  1237. ; Return Value(s):    Returns the previous hover time
  1238. ; User CallTip:        _GUICtrlListViewSetHoverTime($h_listview, $i_time) Sets the amount of time which the mouse cursor must hover over an item before it is selected (required: <GuiListView.au3>)
  1239. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1240. ; Note(s):                $i_time
  1241. ;                                If this value is -1, then the hover time is set to the default hover time
  1242. ;
  1243. ;                            The hover time only affects list-view controls that have the
  1244. ;                            LVS_EX_TRACKSELECT, LVS_EX_ONECLICKACTIVATE, or
  1245. ;                            LVS_EX_TWOCLICKACTIVATE extended list-view style
  1246. ;
  1247. ;===============================================================================
  1248. Func _GUICtrlListViewSetHoverTime($h_listview, $i_time)
  1249.     If IsHWnd($h_listview) Then
  1250.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETHOVERTIME, "int", 0, "int", $i_time)
  1251.         Return $a_ret[0]
  1252.     Else
  1253.         Return GUICtrlSendMsg($h_listview, $LVM_SETHOVERTIME, 0, $i_time)
  1254.     EndIf
  1255. EndFunc   ;==>_GUICtrlListViewSetHoverTime
  1256.  
  1257. ;===============================================================================
  1258. ;
  1259. ; Description:            _GUICtrlListViewSetItemCount
  1260. ; Parameter(s):        $h_listview - controlID
  1261. ;                            $i_items - Number of items that the list-view control will ultimately contain.
  1262. ; Requirement:            None
  1263. ; Return Value(s):    Returns nonzero if successful, or zero otherwise.
  1264. ; User CallTip:        _GuiCtrlListViewSetItemCount($h_listview, $i_items) Causes the list-view control to allocate memory for the specified number of items. (required: <GuiListView.au3>)
  1265. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1266. ; Note(s):                Causes the control to allocate its internal data structures for the specified number of items.
  1267. ;                            This prevents the control from having to allocate the data structures every time an item is added.
  1268. ;
  1269. ;===============================================================================
  1270. Func _GUICtrlListViewSetItemCount($h_listview, $i_items)
  1271.     If IsHWnd($h_listview) Then
  1272.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETITEMCOUNT, "int", $i_items, "int", BitOR($LVSICF_NOINVALIDATEALL, $LVSICF_NOSCROLL))
  1273.         Return $a_ret[0]
  1274.     Else
  1275.         Return GUICtrlSendMsg($h_listview, $LVM_SETITEMCOUNT, $i_items, BitOR($LVSICF_NOINVALIDATEALL, $LVSICF_NOSCROLL))
  1276.     EndIf
  1277. EndFunc   ;==>_GUICtrlListViewSetItemCount
  1278.  
  1279. ;===============================================================================
  1280. ;
  1281. ; Description:            _GUICtrlListViewSetItemSelState
  1282. ; Parameter(s):        $h_listview - controlID
  1283. ;                            $i_index - Zero based index of the item
  1284. ;                            $i_selected - Optional: set the state of the item (1 = selected, 0 = not selected)
  1285. ;                    $i_focused - Optional: set the state of the item (1 = focused, 0 = not focused) (default = 0)
  1286. ; Requirement:            None
  1287. ; Return Value(s):    1 if successful, 0 otherwise
  1288. ;                            If error then $LV_ERR is returned
  1289. ; User CallTip:        _GUICtrlListViewSetItemSelState($h_listview, $i_index[, $i_selected = 1[, $i_focused = 0]]) Sets the Item Selected/UnSelected (required: <GuiListView.au3>)
  1290. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1291. ; Note(s):                $i_index = -1 sets all items for MultiSelect ListView
  1292. ;
  1293. ;===============================================================================
  1294. Func _GUICtrlListViewSetItemSelState($h_listview, $i_index, $i_selected = 1, $i_focused = 0)
  1295.     Local $struct = "int;int;int;int;int;ptr;int;int;int;int;int;ptr", $ret
  1296.     Local $p = DllStructCreate($struct)
  1297.     If @error Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  1298.     If ($i_selected == 1) Then
  1299.         $i_selected = $LVNI_SELECTED
  1300.     Else
  1301.         $i_selected = 0
  1302.     EndIf
  1303.     If ($i_focused == 1) Then
  1304.         $i_focused = $LVNI_FOCUSED
  1305.     Else
  1306.         $i_focused = 0
  1307.     EndIf
  1308.     DllStructSetData($p, 1, $LVIF_STATE)
  1309.     DllStructSetData($p, 2, $i_index)
  1310.     DllStructSetData($p, 4, BitOR($i_selected, $i_focused))
  1311.     DllStructSetData($p, 5, BitOR($LVIS_SELECTED, $i_focused))
  1312.     If IsHWnd($h_listview) Then
  1313.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETITEMSTATE, "int", $i_index, "ptr", DllStructGetPtr($p))
  1314.         $ret = $a_ret[0]
  1315.     Else
  1316.         $ret = GUICtrlSendMsg($h_listview, $LVM_SETITEMSTATE, $i_index, DllStructGetPtr($p))
  1317.     EndIf
  1318.     Return $ret
  1319. EndFunc   ;==>_GUICtrlListViewSetItemSelState
  1320.  
  1321. ;===============================================================================
  1322. ;
  1323. ; Description:            _GUICtrlListViewSetItemText
  1324. ; Parameter(s):        $h_listview - controlID
  1325. ;                            $i_index - Zero based index of the item
  1326. ;                            $i_subitem - Index of the subitem, or it can be zero to set the item label.
  1327. ;                            $s_text - String containing the new text
  1328. ; Requirement:            None
  1329. ; Return Value(s):    1 if successful, 0 if not
  1330. ;                            If error then $LV_ERR is returned
  1331. ; User CallTip:        _GUICtrlListViewSetItemText($h_listview, $i_index, $i_subitem, $s_text) Changes the text of a list-view item or subitem. (required: <GuiListView.au3>)
  1332. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1333. ; Note(s):
  1334. ;
  1335. ;===============================================================================
  1336. Func _GUICtrlListViewSetItemText($h_listview, $i_index, $i_SubItem, $s_text)
  1337.     Local $struct = "int;int;int;int;int;ptr;int;int;int;int;int;ptr", $ret
  1338.     Local $p = DllStructCreate($struct)
  1339.     If @error Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  1340.     Local $sp = DllStructCreate("char[" & StringLen($s_text) + 1 & "]")
  1341.     If @error Then Return SetError($LV_ERR,$LV_ERR,$LV_ERR)
  1342.     DllStructSetData($sp, 1, $s_text)
  1343.     DllStructSetData($p, 1, $LVIF_TEXT)
  1344.     DllStructSetData($p, 2, $i_index)
  1345.     DllStructSetData($p, 3, $i_SubItem)
  1346.     DllStructSetData($p, 6, DllStructGetPtr($sp))
  1347.     If IsHWnd($h_listview) Then
  1348.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETITEMTEXTA, "int", $i_index, "ptr", DllStructGetPtr($p))
  1349.         $ret = $a_ret[0]
  1350.     Else
  1351.         $ret = GUICtrlSendMsg($h_listview, $LVM_SETITEMTEXTA, $i_index, DllStructGetPtr($p))
  1352.     EndIf
  1353.     Return $ret
  1354. EndFunc   ;==>_GUICtrlListViewSetItemText
  1355.  
  1356. ;===============================================================================
  1357. ;
  1358. ; Description:            _GUICtrlListViewSetSelectedColumn
  1359. ; Parameter(s):        $h_listview - controlID
  1360. ;                            $i_col - Value of type int that specifies the column index
  1361. ; Requirement:            None
  1362. ; Return Value(s):    Returns TRUE if successful, or FALSE otherwise
  1363. ; User CallTip:        _GUICtrlListViewSetSelectedColumn($h_listview, $i_col) Sets the index of the selected column (required: <GuiListView.au3>)
  1364. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1365. ; Note(s):                The column indices are stored in an int array
  1366. ;
  1367. ;===============================================================================
  1368. Func _GUICtrlListViewSetSelectedColumn($h_listview, $i_col)
  1369.     If IsHWnd($h_listview) Then
  1370.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETSELECTEDCOLUMN, "int", $i_col, "int", 0)
  1371.         Return $a_ret[0]
  1372.     Else
  1373.         Return GUICtrlSendMsg($h_listview, $LVM_SETSELECTEDCOLUMN, $i_col, 0)
  1374.     EndIf
  1375. EndFunc   ;==>_GUICtrlListViewSetSelectedColumn
  1376.  
  1377. ;===============================================================================
  1378. ;
  1379. ; Description:            _GUICtrlListViewSort
  1380. ; Parameter(s):        $h_listview - controlID
  1381. ;                       $v_descending    - boolean value, can be a single value or array
  1382. ;                       $i_sortcol        - column to sort on
  1383. ; Requirement:            Array.au3
  1384. ; Return Value(s):    None
  1385. ; User CallTip:        _GUICtrlListViewSort(ByRef $h_listview, ByRef $v_descending, $i_sortcol) Sorts a list-view control (required: <GuiListView.au3>)
  1386. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1387. ; Note(s):                :
  1388. ;
  1389. ;===============================================================================
  1390. Func _GUICtrlListViewSort($h_listview, ByRef $v_descending, $i_sortcol)
  1391.     Local $X, $Y, $Z, $b_desc, $columns, $items, $v_item, $temp_item
  1392.     If _GUICtrlListViewGetItemCount($h_listview) Then
  1393.         If (IsArray($v_descending)) Then
  1394.             $b_desc = $v_descending[$i_sortcol]
  1395.         Else
  1396.             $b_desc = $v_descending
  1397.         EndIf
  1398.         $columns = _GUICtrlListViewGetSubItemsCount($h_listview)
  1399.         $items = _GUICtrlListViewGetItemCount($h_listview)
  1400.         For $X = 1 To $columns
  1401.             $temp_item = $temp_item & " |"
  1402.         Next
  1403.         $temp_item = StringTrimRight($temp_item, 1)
  1404.         Local $a_lv[$items][$columns + 1], $i_selected
  1405.         $i_selected = StringSplit(_GUICtrlListViewGetSelectedIndices($h_listview), "|")
  1406.         For $X = 0 To UBound($a_lv) - 1 Step 1
  1407.             For $Y = 0 To UBound($a_lv, 2) - 2 Step 1
  1408.                 $v_item = StringStripWS(_GUICtrlListViewGetItemText($h_listview, $X, $Y), 2)
  1409.                 If (StringIsFloat($v_item) Or StringIsInt($v_item)) Then
  1410.                     $a_lv[$X][$Y] = Number($v_item)
  1411.                 Else
  1412.                     $a_lv[$X][$Y] = $v_item
  1413.                 EndIf
  1414.             Next
  1415.             $a_lv[$X][$Y] = $X
  1416.         Next
  1417.         _ArraySort($a_lv, $b_desc, 0, 0, $columns + 1, $i_sortcol)
  1418.         _GUICtrlListViewSetItemSelState($h_listview, -1, 0)
  1419.         For $X = 0 To UBound($a_lv) - 1 Step 1
  1420.             For $Y = 0 To UBound($a_lv, 2) - 2 Step 1
  1421.                 _GUICtrlListViewSetItemText($h_listview, $X, $Y, $a_lv[$X][$Y])
  1422.             Next
  1423.             For $Z = 1 To $i_selected[0]
  1424.                 If $a_lv[$X][UBound($a_lv, 2) - 1] = $i_selected[$Z]Then
  1425.                     _GUICtrlListViewSetItemSelState($h_listview, $X, 1, 1)
  1426.                     ExitLoop
  1427.                 EndIf
  1428.             Next
  1429.         Next
  1430.         If (IsArray($v_descending)) Then
  1431.             $v_descending[$i_sortcol] = Not $b_desc
  1432.         Else
  1433.             $v_descending = Not $b_desc
  1434.         EndIf
  1435.     EndIf
  1436. EndFunc   ;==>_GUICtrlListViewSort
  1437.  
  1438. ;===============================================================================
  1439. ; the following functions are for internal use or possibly new functions as
  1440. ; of yet not released
  1441. ;===============================================================================
  1442.  
  1443. ;===============================================================================
  1444. ;
  1445. ; Description:            _ReverseColorOrder
  1446. ; Parameter(s):        $v_color - Hex Color
  1447. ; Requirement:            None
  1448. ; Return Value(s):    Return Hex RGB or BGR Color
  1449. ; User CallTip:        _ReverseColorOder($v_color) Convert Hex RGB or BGR Color to Hex RGB or BGR Color
  1450. ; Author(s):            Gary Frost (custompcs at charter dot net)
  1451. ; Note(s):                Used for getting List view colors
  1452. ;
  1453. ;===============================================================================
  1454. Func _ReverseColorOrder($v_color)
  1455.     Local $tc = Hex(String($v_color), 6)
  1456.     Return '0x' & StringMid($tc, 5, 2) & StringMid($tc, 3, 2) & StringMid($tc, 1, 2)
  1457. EndFunc   ;==>_ReverseColorOrder
  1458.  
  1459. ;===============================================================================
  1460. ;===============================================================================
  1461. Func _GUICtrlListViewArrange($h_listview, $arrange)
  1462.     If IsHWnd($h_listview) Then
  1463.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_ARRANGE, "int", $arrange, "int", 0)
  1464.         Return $a_ret[0]
  1465.     Else
  1466.         Return GUICtrlSendMsg($h_listview, $LVM_ARRANGE, $arrange, 0)
  1467.     EndIf
  1468. EndFunc   ;==>_GUICtrlListViewArrange
  1469.  
  1470. ;===============================================================================
  1471. ;===============================================================================
  1472. Func _GUICtrlListViewSetIconSpacing($h_listview, $i_cx, $i_cy)
  1473.     If IsHWnd($h_listview) Then
  1474.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETICONSPACING, "int", 0, "int", $i_cx * 65536 + $i_cy)
  1475.         Return $a_ret[0]
  1476.     Else
  1477.         Return GUICtrlSendMsg($h_listview, $LVM_SETICONSPACING, 0, $i_cx * 65536 + $i_cy)
  1478.     EndIf
  1479. EndFunc   ;==>_GUICtrlListViewSetIconSpacing
  1480.  
  1481. ;===============================================================================
  1482. ;===============================================================================
  1483. Func _GUICtrlListViewSetItemPosition($h_listview, $i_index, $i_x, $i_y)
  1484.     If IsHWnd($h_listview) Then
  1485.         Local $a_ret = DllCall("user32.dll", "int", "SendMessage", "hwnd", $h_listview, "int", $LVM_SETITEMPOSITION, "int", $i_index, "int", $i_x * 65536 + $i_y)
  1486.         Return $a_ret[0]
  1487.     Else
  1488.         Return GUICtrlSendMsg($h_listview, $LVM_SETITEMPOSITION, $i_index, $i_x * 65536 + $i_y)
  1489.     EndIf
  1490. EndFunc   ;==>_GUICtrlListViewSetItemPosition
  1491.